<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
    //创建一个正则表达式检查一个字符串里面是否含有aaa
    var reg=/aaa/;
    console.log(reg.test("aaabbc"));
    //重复写有些繁琐，就可以通过量词设置一个内容出现的次数
    //{n}表示重复n次
    //{m,n}表示重复m-n次
    //{m,}表示重复m次以上
    var reg2=/a{3}/i;
    //除了设置量词之外，还可以额外设置匹配模式，比如全局匹配或者是否忽略大小写
    console.log(reg2.test("aaAbbc"));
    //量词只他前边的一个内容起作用
    //例如 bc{3}指的是bccc而不是bcbcbc
    var reg3=/bc{3}/;
    console.log(reg3.test("bcbcbc"));//控制台显示错误，因为检查的字符串是bccc
    console.log(reg3.test("bccc"));//控制台显示正确，因为检查的字符串是bccc
    //可以用()来锁定量词的内容
    var reg4=/(bc){3}/;
    console.log(reg4.test("bcbcbc"));//控制台显示正确，因为检查的字符串是bcbcbc
    //量词衍生使用
    var reg5=/ab{1,4}c/;//这样表示b的数量是1-4个，所以abc abbc abbbc abbbbc这四个都可以
    console.log(reg5.test("abc"));
    console.log(reg5.test("abbc"));
    console.log(reg5.test("abbbc"));
    console.log(reg5.test("abbbbc"));

    var reg6=/ab{4,}c/;//表示中间的b的数量是四个或者四个以上
    console.log(reg6.test("abbc"));//控制台输出错误
    console.log(reg6.test("abbbc"));//控制台输出错误
    console.log(reg6.test("abbbbc"));//控制台输出正确
    console.log(reg6.test("abbbbbbbc"));//控制台输出正确

    //n+ 匹配任何包含至少一个n的字符串
    //n+ 相当于n{1,}即数量大于等于一的n的字符串
    var reg7=/ab+c/;
    console.log(reg5.test("ac"));//控制台输出错误，因为没有b
    console.log(reg7.test("abc"));//控制台输出正确，因为有b
    console.log(reg7.test("abbc"));//控制台输出正确，因为有bb
    console.log(reg7.test("abbbc"));//控制台输出正确，因为有bbb
    //至少包含一个ab就能够输出正确，多个ab不影响输出结果
    
    //n* 相当于n{0,}即数量大于等于领的n的字符串
    var reg8=/ab*c/;
    console.log(reg8.test("ac"));//控制台输出正确，因为没有b也可以
    console.log(reg8.test("abc"));//控制台输出正确，因为有b
    console.log(reg8.test("abbc"));//控制台输出正确，因为有bb
    console.log(reg8.test("abbbc"));//控制台输出正确，因为有bbb

    //n? 0个或者1个，相当于{0,1}即数量是0-1个
    var reg9=/ab?c/;
    console.log(reg9.test("ac"));//控制台输出正确，因为没有b也可以
    console.log(reg9.test("abc"));//控制台输出正确，因为有一个b
    console.log(reg9.test("abbc"));//控制台输出错误，因为有连个b
    console.log(reg9.test("abbbc"));//控制台输出错误，因为三个b

    //检查一个字符串是否以a开头
    // ^表示开头
    //比如 /^a/
    var reg10=/^a/;
    var reg11=/c$/;
    console.log(reg10.test("ab"));//控制台输出正确，因为开头是a
    console.log(reg10.test("bc"));//控制台输出错误，因为开头不是a
    console.log(reg10.test("abc"));//控制台输出正确，因为开头是a
    console.log(reg10.test("bcd"));//控制台输出错误，因为开头不是a
    console.log(reg11.test("ab"));//控制台输出错误，因为结尾是b
    console.log(reg11.test("bc"));//控制台输出正确，因为结尾是c
    console.log(reg11.test("abc"));//控制台输出正确，因为结尾是c
    console.log(reg11.test("bcd"));//控制台输出错误，因为结尾是d

    //如果同时使用开头和结尾
    var reg12=/^a$/;
    console.log(reg12.test("aa"));//控制台输出错误，因为开头的a和结尾的a不是同一个
    console.log(reg12.test("a"));//控制要输出正确，因为检索的a即是开头也是结尾

    //如果使用或语句
    var reg13=/^a|a$/;
    console.log(reg13.test("a"));//控制台输出正确，因为开头或者结尾是a
    console.log(reg13.test("aa"));//控制台输出正确，因为开头或者结尾是a

    //创建一个正则表达式，用来检查一个字符串是否是手机号
    //手机号的规则
    //1.以1开头
    //2.第二位数字是3-9
    //3.三位以后包括三位的数字可以使0-9任意一个
    var mobilephoneStr="15697955165";
    var mobilephoneStr2="18365445708";
    var reg14=/^1[3-9][0-9]{9}$/;
    console.log(reg14.test(mobilephoneStr));//控制台输出为true，符合条件
    console.log(reg14.test(mobilephoneStr2));//控制台输出为true，符合条件
    console.log(reg14.test("11011011011"));//控制台输出为fals，不符合手机号的规则
    </script>
</head>
<body>
    
</body>
</html>
